這4天要來介紹Gin框架,一個輕量級的Web框架,它基於Go語言的net/http
套件進行開發,提供了許多方便的功能,例如路由、中間件、參數綁定、請求處理等等。Gin的性能非常好,並且易於使用,所以在Go語言中非常受歡迎。
它的特色如下
err
並panic的middlewaregin.Context
來取得請求的資訊,並進行回應要使用Gin,我們需要先安裝它,可以使用go get
指令來安裝Gin
go get -u github.com/gin-gonic/gin
然後import 到你的code裡面
package main
import (
"github.com/gin-gonic/gin"
"net/http" // 用於提供狀態碼常數
)
func main(){
r := gin.Default()
r.GET("/", func(c *gin.Context){
c.String(http.StatusOK, "Hello, World!")
})
r.Run(":8080")
}
接著執行程式,然後打開瀏覽器輸入http://localhost:8080
然後BanG!恭喜你成功撰寫第一個Gin API
如果要指定request method,可以使用c.(method)
來進行相對應的requst method處理,然後在第二個參數放入處理函式(又稱為handler),你可以放入多個handler,Gin會依序執行
r.GET("/get", func(c *gin.Context){
c.String(http.StatusOK, "GET")
})
r.POST("/post", func(c *gin.Context){
c.String(http.StatusOK, "POST")
})
r.PUT("/put", func(c *gin.Context){
c.String(http.StatusOK, "PUT")
})
r.DELETE("/delete", func(c *gin.Context){
c.String(http.StatusOK, "DELETE")
})
//...
透過c.Query
來取得Query String的參數
r.GET("/query", func(c *gin.Context){
name := c.Query("name")
age := c.Query("age")
c.JSON(http.StatusOK, gin.H{
"name": name,
"age": age,
})
})
透過:param
來取得Path Parameter
r.GET("/path/:name/:age", func(c *gin.Context){
name := c.Param("name")
age := c.Param("age")
c.JSON(http.StatusOK, gin.H{
"name": name,
"age": age,
})
})
透過c.PostForm
來取得Form Data
r.POST("/form", func(c *gin.Context){
name := c.PostForm("name")
age := c.PostForm("age")
c.JSON(http.StatusOK, gin.H{
"name": name,
"age": age,
})
})
透過c.BindJSON
來取得JSON資料
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
r.POST("/json", func(c *gin.Context){
var person Person
if err := c.BindJSON(&person); err != nil {
c.String(http.StatusBadRequest, "Bad Request")
return
}
c.JSON(http.StatusOK, person)
})
那麼今天的文章就到這告一段落,如果我的文章有任何地方有錯誤請在留言區反應
明天將會介紹Gin上傳檔案的方法